/**
 * 广发银行登录业务处理
 */


/**用户名、密码等基本信息处理
 */
function inputBase(){
    //获取登录用户名
    var loginStr = getLoginParams(context)[0];
    var passWord = context.get(Constants.LUA_TASK_TOKEN);

    logger.info(BankCode.CGB + " 登录开始 taskkey {}",context.get(Constants.LUA_TASK_KEY));
    logger.info(BankCode.CGB + " 输入用户名开始 taskkey {}",context.get(Constants.LUA_TASK_KEY));
    // 输入用户,卡号
    set_input_text_by_id("loginId", loginStr);

    Thread.sleep(500);
    //展示页面
    show();
    // show_noff();
    logger.info(BankCode.CGB + " 输入密码开始 taskkey {}",context.get(Constants.LUA_TASK_KEY));
    //输入密码并返回密码全是*号表示
    var pwdCheckResult = input_password_callback(passWord);// 输入密码

    //检查密码是否正确输入

    var isCorrectFunc = function (inputPassword) {
        return inputPassword.length == passWord.length;
    };
    //输入完密码hide()隐藏窗口，因为多个任务同时只能打开一个ie
    hide();
    var getErrorMsg = function () {
        return "密码因控件输入错误";
    };
    assertTrueOrThrowException(pwdCheckResult, isCorrectFunc, getErrorMsg)
    logger.info(pwdCheckResult+" taskkey {}",context.get(Constants.LUA_TASK_KEY));
    Thread.sleep(500);
}

/**
 * 验证码处理
 */
function inputImg() {
    logger.info(BankCode.CGB + " 截图开始 taskkey {}",context.get(Constants.LUA_TASK_KEY));
    //通过id截取验证码图片
    var captchaPath = get_image_by_id("verifyImg");// 截图
    logger.info("任务【 {} 】图片验证码路径【 {} 】", context.get(LUA_TASK_KEY), captchaPath)
    var isCaptchaPathCorrectFunc = function(captchaPath) {
        return captchaPath !== null && captchaPath !== undefined && captchaPath !== 'path fail'
    }

    var getCaptchaPathErrorMsgFunc = function(captchaPath) {
        return "图片验证码获取失败"
    }

    assertTrueOrThrowException(captchaPath, isCaptchaPathCorrectFunc, getCaptchaPathErrorMsgFunc)
    logger.info("任务【 {} 】图片验证码获取成功", context.get(LUA_TASK_KEY))
    context.put(TASK_IMG_PATH,captchaPath);
    context.put(TASK_IMG_REGEX,"[0-9a-zA-Z]{4}");
    //调用打码平台获取验证码值
    var code = waitImgCodeBySecondsByJs(context,60,true,3);
    logger.info(BankCode.CGB + " 人工打码开始 taskkey {},获取的验证是{}",context.get(Constants.LUA_TASK_KEY),code);
    //如果返回的code位数不够，不返回false 继续走之后会获取验证码错误返回false并刷新验证码
    if (StringUtils.isBlank(code) || code.length() != 4) {
        logger.info("打码位数不是四位，手动补齐 {}  taskkey {}", code,context.get(Constants.LUA_TASK_KEY));
        // code="1234";
    }
    logger.info(code);
    logger.info(BankCode.CGB + " 输入验证码开始 taskkey {}",context.get(Constants.LUA_TASK_KEY));
    //输入验证码
    set_input_text_by_id("captcha", code);// 输入验证码
    logger.info(BankCode.CGB + " 点击登录按钮开始 taskkey {}",context.get(Constants.LUA_TASK_KEY));
    //检查验证码是否输入正常
    var captchaInputResult = checkIfInput("captcha", code);

    var isCaptchaInputCorrectFunc = function(captchaInputResult) {
        return captchaInputResult
    }

    var getCaptchaInputErrorMsgFunc = function(captchaInputResult) {
        return "图片验证码输入错误"
    }
    assertTrueOrThrowException(captchaInputResult, isCaptchaInputCorrectFunc, getCaptchaInputErrorMsgFunc);
    //点击登录按钮
    clickById("loginButton");
    Thread.sleep(3000);
    var isLoginCorrectFunc = function () {
        logger.info(BankCode.CGB + " 登录验证开始 taskkey {}",context.get(Constants.LUA_TASK_KEY));
        var new_url = get_url();
        logger.info("new_url=="+new_url);
        if(new_url.contains("welcome.do")){
            //登录成功后释放锁
            lock.unlock();
            logger.info(BankCode.CGB + " 登录跳转成功 taskkey {}",context.get(Constants.LUA_TASK_KEY));
            return true;
        }else{
            return false;
        }
    };
    var contentWillBeCheckedFunc = function () {
        return "";
    }
    var getLoginErrorMsg = function () {

        var alert = get_alert_msg();
        logger.info("BankCode.CGB  taskkey {},获取alert弹出信息{}",context.get(Constants.LUA_TASK_KEY),alert);
        if (StringUtils.isNotBlank(alert)) {
            logger.info(BankCode.CGB+"alert:"+alert+" taskkey {}",context.get(Constants.LUA_TASK_KEY));
        }
        //如果包含验证码，做重试
        if (alert.contains("验证码")) {
            logger.info(BankCode.CGB + " 验证码识别失败,taskkey {}",context.get(Constants.LUA_TASK_KEY));
            return "图片验证码错误";
        }

        //获取当前页面
        var new_url = get_url();
        logger.info(BankCode.CGB + "  taskkey {}，获取当前路径 {}",context.get(Constants.LUA_TASK_KEY),new_url);
        //根据获取到页面上的返回错误信息，判断是否有异常
        var backMsg = getAreaMsg();
        var msg = JSON.parse(backMsg).getString("msg");
        logger.info(BankCode.CGB + "  taskkey {}，获取当前提示信息 {}",context.get(Constants.LUA_TASK_KEY),msg)
        if("https://ebanks.cgbchina.com.cn/perbank/#".equals(new_url) && StringUtils.equals(msg,"false") && StringUtils.equals(alert,"") ){
            return "请输入合法的账号";
        }


        //var html = Jsoup.parse(FileUtils.readFileToString(new File("C:\\Users\\Administrator\\18061012CREDups7aJ33\\login_result.html")));
        //获取当前页面信息
        //如果是异常信息跳转到新的url
        var html = get_html();
        if (new_url.contains("OT00") && new_url.contains(".do")) {
            var doc = Jsoup.parse(html);
            storeDataToFile(context, html, "login_result.html")
            //根据errorMessage判断是什么原因登录错误
            var msg = doc.select("#errorMessage").text();
            logger.info(new_url+" taskkey {}",context.get(Constants.LUA_TASK_KEY));
            if (!StringUtils.isBlank(msg)) {
                logger.info(BankCode.CGB + " 登录失败" + msg + " taskkey {}",context.get(Constants.LUA_TASK_KEY));
                return msg;
            }
            if(html.contains("欢迎您进入我行个人网银，请设置您的登录信息")){
                return "欢迎您进入我行个人网银，请设置您的登录信息";
            }
            //如果不是错误url页面则 在日志中打出当前页面url 并判断登录错误原因
        } else {
            logger.info(new_url+" taskkey {}",context.get(Constants.LUA_TASK_KEY));
            if(html.contains("欢迎您进入我行个人网银，请设置您的登录信息")){
                return "欢迎您进入我行个人网银，请设置您的登录信息";
            }else if(html.contains("设置网银登录密码")){
                return "设置网银登录密码";
            }else if(html.contains("重置网银登录密码")){
                return "重置网银登录密码";
            }
        }

    }
    assertTrueOrThrowExceptionByTimes(contentWillBeCheckedFunc, isLoginCorrectFunc, getLoginErrorMsg,15)
}